//
//  CCCache.h
//  HaiYue
//
//  Created by skyline on 2018/1/22.
//  Copyright © 2018年 skyline. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface CCCache : NSObject
/**
 *@pragma Documents
 *@pragma 自动备份在icould/itunes
 *@pragma 主要用来保存应用本身产生的文件或数据
 */
+ (NSString *)getDocumentsPath;
/**
 *@pragma library/Caches
 *@pragma itunes/icould不会对其备份
 *@pragma 应用退出时，不会清除缓存，一般存放体积比较大，不是特别重要的资源
 */
+ (NSString *)getCachesPath;
/**
 *@pragma library/Preferences
 *@pragma 自动备份icould/itunes
 */
+ (NSString *)getPreferencesPath;
/**
 *@pragma Tmp
 *@pragma itunes/icould不会对其备份
 *@pragma 保存临时文件
 *@pragma 应用退出后，存储资源紧张时，系统会清空目录下文件
 *@pragma iphone重启时，目录下的文件会被清空
 */
+ (NSString *)getTmpPath;



/**
 NSUserDefaults 偏好设置
 在Preferences路径 保存数据
 一般存储账号密码之类的东西
 @param data 需要保存到数据
 @param key key值
 */
+ (void)value:(id)data forKey:(NSString *)key;

/**
 NSUserDefaults 偏好设置
 在Preferences路径 读取数据
 
 @param key key值
 @return 数据
 */
+ (id)valueFromKey:(NSString*)key;

/**
 NSUserDefaults 偏好设置
 在Preferences路径 删除数据
 
 @param key key值
 */
+ (void)rmValueWithKey:(NSString *)key;



/**
 以plist形式保存数据
 1.默认存储在caches路径下
 2.[value writeToFile:path atomically:YES];
 3.[NSKeyedArchiver archiveRootObject:value toFile:path]
 4.使用NSKeyedArchiver可以归档NSString、NSArray、NSDictionary、NSSet、NSDate、NSNumber和NSData等基本的Foundation对象
 @param value 数据
 @param plist plist名称
 @return YES=存储成功，NO=失败
 */
+ (BOOL)caches:(id)value toPlist:(NSString*)plist;

/**
 从plist中读取数据
 1.默认是caches路径下
 2.从plist读取，要得到NSArray、NSDictionary的类型，使用[NSArray arrayWithContentsOfFile:path] 或者[NSDictionary dictionaryWithContentsOfFile:path]不同的方法
 3.使用NSKeyedUnarchiver可以恢复NSString、NSArray、NSDictionary、NSSet、NSDate、NSNumber和NSData等基本的Foundation对象
 
 @param plist plist名称
 @return 数据
 */
+ (id)cachesFromPlist:(NSString *)plist;



/**
 归档

 @param object 需要归档的数据
 @param file 归档路径
 */
+ (void)archiver:(id)object toFile:(NSString *)file;

/**
 解档

 @param file 文件路径
 @return 解档后的数据
 */
+ (id)unarchiverObjFromFile:(NSString *)file;

@end
